查看原文
其他

开箱即用|Cocos Creator最新3D动态骨骼插件,轻松模拟头发自然动态(文末福利)

wingcd COCOS 2023-03-16

动态骨骼是游戏开发中的一种常见技术,常用于表现头发、尾巴、衣物等跟随角色动作所产生的自然的飘动效果,以此提升游戏的视觉表现。


开发者 wingcd 写了一个开箱即用的 3D 动态骨骼插件,只需通过简单的设置,即可在 Cocos Creator 中通过物理模拟出头发、胸部、尾巴、衣物等自然的晃动或飘动的效果。


Demo 效果预览


基本功能


  • 开箱即用,只需设置组件参数即可;

  • 性能优异的物理模拟,所有向量与矩阵均使用对象池;

  • 支持 Cocos Creator 3.5;

  • 包含完整的代码。


功能实现


自定义摇摆



1、导入模型,放入自建空节点下:


2、关闭 烘焙动画 Use Bake Animation [非常重要]:


3、在空节点下添加 DynamicBone 组件:


4、设置主要参数:

  • root:骨骼节点;

  • end node(end offset):如果只有一个节点,比如有些胸部动画,必须添加尾结点(优先)或者尾部偏移值;

  • 调节其他物理参数。


5、可打开编辑器模拟,移动模型即时看到效果:


注:示例模型带有错误示范,胸部由两个结点控制后,造成了模型抖动,一般胸部第二个结点不能有动作权重。


参数设置



动态骨骼所有参数设置如下:

  • Root:需要模拟的骨骼根节点。

  • Update Rate:模拟计算帧率。

  • Damping:阻尼(0-1),值越大越阻力越大,模拟时间越长。

  • Damping Distrib:

  1. 阻尼散布曲线,默认常量表示不使用曲线;

  2. 曲线时,横轴为动态骨骼节点在总长度所占百分比,起点值为 damping 值;

  3. 其他散布曲线类似,将不在单独描述。

  • Elasticity:弹性值(0-1), 值越大弹性越大。

  • Stiffness:硬度值(0-1), 值越大硬度越大,1类似木棍。

  • Inert:惰性/延迟。惰性值(0-1),值越大,追踪位移的时间越长。

  • Radius:(0-1),用于碰撞的半径。

  • End Node:尾部延长节点,用于单节点动画物理模拟。

  • End Offset:局部坐标系下的尾部延长向量,用于单节点动画物理模拟,优先使用尾部节点。

  • Gravity:世界坐标系下的重力值。

  • Force:世界坐标系下的常驻外力。

  • Freeze Axis:动画限制平面,设置轴表示方向。

  • Colliders:碰撞器,防止模拟时穿模。

  • Exclude Nodes:排除节点,从排除节点中断模拟。

  • Distant Disable:是否开启距离测试。

  • refenceObject:距离测试参考目标,空时按相机计算。

  • distanceToObject:距离测试阈值。

  • Enable Editor Debug:是否允许在编辑器模式下运行模拟。

  • Show Debug Gizmos:是否显示调式图形,3.5以上版本支持。


碰撞模型


1、平面碰撞:


2、胶囊体碰撞:


完成配置后,直接播放动画即可,关闭组件即可关闭物理模拟。


资源地址


  • 插件下载:

https://store.cocos.com/app/detail/3782


  • Demo 案例源码:

https://gitee.com/wingcd/cccdyanmic-bone-demo


  • 在线体验地址:

https://h5.redblack.cn/ccc/dynamic-bone/demo1/

https://h5.redblack.cn/ccc/dynamic-bone/demo2/


  • 论坛讨论帖:

https://forum.cocos.org/t/topic/135672


Tips:1、此项目在 v3.5 上开发,但也只是为了使用图形显示功能用于 debug,v3.5 前的版本理论上也是可以使用的,只是不能正常显示测试图形,不利于参数调试。

2、动态骨骼节点链中,不应包含锁节点的不必要节点,否则可能出现模拟错误(抖动、失效等问题)。




📢 点击文末【阅读原文】即可前往 Cocos Store 下载 3D 动态骨骼插件,限时2天优惠中!欢迎多多转发/分享给需要的小伙伴,别错过啦~


往期精彩

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存